package main

import (
	"fmt"
	"unsafe"
)

func main() {

	/*
			基本数据类型
				数值型
				    整数型类型 int, int8, int16, int32, int64, uint, uint8, uint16, uint32, uint64, byte
			        浮点数类型 float32, float64   //就是用于放小数值的 比如3.14 0.28  -7.19 等等
		              浮点数
			    字符型 （没有单独的字符型，使用byte 来保存单个字母字符）
			    布尔型 （bool）
			    字符串 （string）

			派生数据类型
				/        指针， 数组， 结构体， 管道，函数， 切片， 接口， map
			负责数据类型
	*/

	//定义一个有符号整数类型：
	var num1 int8 = -120
	fmt.Println(num1)

	//定义一个 无符号的整数类型：
	var num2 uint8 = 200
	fmt.Println(num2)

	/*
		定义一个其他的整数类型

		printf：函数的作用就是：格式化的，吧num3的类型填充到 %T 的位置上
		unsafe.Sizeof：显示变量的占用的字节数是多少位 进项变量的写进去
	*/

	var num3 = 28
	fmt.Printf("num3的类型是：%T ", num3)
	fmt.Println()
	fmt.Println(unsafe.Sizeof(num3))

	/*
		表示学生的年龄：身份证号：性别：身高：

	*/
	var age byte = 32
	var idname int = 412727199806120712
	var gender string = "男"
	var height float32 = 185.2
	fmt.Printf("小明的信息表 %T", age, idname, gender, height)

	//定义浮点数的数据：
	var v1 float32 = 3.14
	fmt.Println(v1)
	//可以表示正浮点数，也可以表示负的浮点数
	var v2 float32 = -3.14
	fmt.Println(v2)

	//浮点数可以用十进制表示形式，也可以用科学计算法表示形式 E 大写小写都可以的
	var v3 float32 = 314e-2
	fmt.Println(v3)

	var v4 float32 = 314e+2
	fmt.Println(v4)

	var v5 float32 = 314e-2
	fmt.Println(v5)

	var v6 float64 = 314e+2
	fmt.Println(v6)

	//浮点数可能会有精度的损失，所以通常情况下，建议你使用 float64
	var v7 float32 = 256.000000916
	fmt.Println(v7)

	var v8 float64 = 256.000000916
	fmt.Println(v8)

	//golang中默认的浮点数类型为：float64
	var v9 = 3.17
	fmt.Println(v9)
	fmt.Printf("v9对应的浮点数默认类型为：%T ", v9)

	//定义字符类型的数据：
	var c1 byte = 'a'
	fmt.Println(c1)

	var c2 byte = '6'
	fmt.Println(c2)

	var c3 byte = '('
	fmt.Println(c3)

	var c4 int = '中'
	fmt.Println(c4)

	var c5 byte = 'A'
	// fmt.Printf这个方法是显示 打印转换的 字符集%c
	fmt.Printf("c5对应的集体的字符为：%c", c5)

	//练习转移字符：
	//\n 换行
	fmt.Println("aaaaaaaa\naaa")

	// \b 退格
	fmt.Println("aaaa\baaaa")

	// \r 光标回到本行的开头，后续输入的就会替换原有的字符
	fmt.Println("aaaa\rbbb")

	// \t 制表符 一个是八位字符 不够的空格来凑
	fmt.Println("aaaaaa\taaaa")

	// \" \\ \'  三个符号 基本感念是一个意思 就是前面的 单引号 双引号 反斜杠
	fmt.Println("aaaaa")

}
